iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
7

Keras 不是很簡單嗎?

Keras 是深度學習最簡單的敲門磚,但是,計畫趕不上變化,所有市面上的書籍都追不上 Keras 版本的更新,例如:

  1. Google AI Team 依照 Keras 規格開發一套全新的 Keras 模組,並內含在 TensorFlow 內。
  2. 大神François Chollet不玩了,獨立套件Keras官網文件全部改為介紹 TensorFlow 的 Keras 模組。
  3. Keras模組與TensorFlow其他模組無縫整合,功能更強大,使用更複雜。
  4. TensorFlow 版本更新頻繁,也不完全向後相容(Backward Compatible),很多語法也迅速被丟進垃圾桶,另外有更多的語法要塞進我快爆炸的腦袋。

基於以上原因,只能再重起爐灶,再K一遍了。

正確的資訊

Tensorflow 版本更新非常快,規格也變動頻繁,在網路上抓的程式,執行常常出現錯誤訊息,例如:

  1. Tensorflow 2.x版預設為 Eager Mode,抓到1.x版的程式,內含 Session,就無法執行。
  2. function 更迭頻繁,舊版function被淘汰(depreciated),或是被移到其他模組,命名空間(Name Space)改了。
  3. function 不存在,因為安裝的版本不夠新,例如,Keras 官方網站的範例就是最新的版本,如果你安裝的不是最新的版本,執行範例碼常常會出錯。

在這紛亂的局面下,唯一可信的網站,大概只剩兩個 Keras 官方資源:

  1. Keras 官方網站
  2. TensorFlow 官方網站

安裝程序

Tensorflow 安裝方式也悄悄改變了(應該只是沒通知我而已),某日下午看到【這一頁】,驚呆了,連安裝也有 1.x版及 2.x版之別,有權者真是太任性了,連安裝指令也可以說變就變,只能說天下沒有【免費又可口】的午餐。

  1. TensorFlow 1.x 版
    pip install TensorFlow ==> 安裝 CPU 版
    pip install TensorFlow-gpu ==> 安裝 GPU 版

  2. TensorFlow 2.x 版
    pip install TensorFlow ==> 同時支援 CPU/GPU
    pip install TensorFlow-gpu ==> 只支援 GPU

GPU 支援

要使用 GPU 還需安裝 CUDA Toolkit、cuDNN SDK,請參考【官方說明】。原本使用 conda install TensorFlow-gpu 可以自動安裝 CUDA Toolkit、cuDNN SDK,現在已經行不通了,它的TensorFlow的版本已經過舊,只支援 Python v3.5 ~ v3.7,而最新版的TensorFlow需安裝在Python v3.8 以上。

要知道 TensorFlow 所需要的 CUDA Toolkit 版本,可以執行 python ,並輸入以下程式:

import tensorflow

出現 cudart64_XXX.dll not found,就安裝XXX版本,前兩位是 Major version,第三位是 Minor version,TensorFlow 不計較 Minor version,較新即可。

再下載 cuDNN SDK,需先註冊並登入 NVidia 網站,版本可參考 TensorFlow 官網,下載後解壓縮,直接將cuda下三個目錄(bin、include、lib)覆蓋至CUDA Toolkit安裝目錄下,例如 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2,即大功告成。

check GPU 是否安裝成功:

import tensorflow as tf
tf.config.list_physical_devices('GPU')

出現下列訊息表示成功。

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

錯誤修正

搭配 Python 版本,規矩如下:

  1. 你若安裝 Python V3.7 或更舊版,你只能安裝TensorFlow 2.0.0版,指令如下:
    pip install TensorFlow==2.0.0
  2. 若安裝 Python V3.8,才能安裝 TensorFlow 最新版。幸好最新版的 Anaconda,已昇級為 Python V3.8。最近安裝最新版Anaconda及TensorFlow,在import tensorFlow時出現錯誤如下,查了很久,找到這一篇,才知道要更新 MSVC 2019 runtime
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: DLL load failed: The specified module could not be found.
  1. 若安裝 Python V3.9,不能安裝 TensorFlow 任何版本。
  2. 如果 Windows 版本過舊,安裝有時候會出現 Dll loaded error。

如果還不行,可改用 conda install tensorflow 安裝,版本可能稍舊。

真虧GooXXX這家公司,能把世界搞得這麼亂。

注意,以上訊息只是撰文時的狀態,未來TensorFlow、Python、Anaconda 版本更新時,都會牽動安裝的方式,只能請讀者注意【官方網頁】了。

結論就是先安裝最新版的 Anaconda,再安裝 TensorFlow(pip install TensorFlow),這是最單純的安裝方式。

安裝 TensorFlow 1.x 或 2.x 版

吃這個也癢,吃那個也癢,網路上的許多套件及範例程式都還是 TensorFlow 1.x 版,一旦你安裝了 2.x 版,那些套件就不能執行了,當然可以執行下列指令,切換回 1.x 預設模式,但是,若套件內含的程式很多時,要改就沒有那麼容易了:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

當然也可以參考這裡,將整個目錄的程式轉換為 2.x 版,但是,未來套件升級後,不是又要轉換一次,累啊 !!

轉換指令如下,我試了一下,好像也轉換的不太完全。

tf_upgrade_v2 --intree old_directory --outtree new_directory

反之,若安裝 TensorFlow 1.x 版,未來許多新程式都不能使用,就學習的角度,也是不可行。

個人建議還是要利用 Python 的虛擬環境功能,安裝多個虛擬環境,同時安裝 1.x 及 2.x 版,視需要切換環境,注意,若有將Python設定在環境變數Path中,記得要一併切換,免得把環境弄得一團亂。Mac/Linux 也有類似的設定問題,不多贅述。

發文內容

筆者除參考官方資源外,也會多方參酌,盡量以一個初學者的角度,重新認識 TensorFlow Keras 模組,不會再談 Keras 獨立套件了,畢竟,創作者已放棄版本更新了。但是,他的大作 還是值得一讀,有些觀念依然適用。也有【中譯版】【第二版】 也剛出爐。

除了Keras基本概念的介紹,另外,深度學習的演算法進展日新月異,例如 BERT、YOLO、強化學習(RL)、GAN、...等等的演算法,之前並未撰文說明,後續會花一些篇幅介紹,畢竟不談應用也是蠻無聊的。

最後,秉持 碼農(I Code So I Am)精神,盡量每篇都附上範例程式說明,並且多找些圖片說明(雖然不養眼),幫助讀者快速理解。

下次就從【梯度下降與自動微分】說起了,Happy coding.

工商廣告一下,系列文章整合至以下書籍:
PyTorch:
開發者傳授 PyTorch 秘笈
https://ithelp.ithome.com.tw/upload/images/20220531/20001976MhL9K2rsgO.png
2022/6/20 出版。

TensorFlow:
深度學習 -- 最佳入門邁向 AI 專題實戰
https://ithelp.ithome.com.tw/upload/images/20220531/20001976ZOxC7BHyN3.jpg


下一篇
Day 02:梯度下降與自動微分
系列文
輕鬆掌握 Keras 及相關應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
黑修斯
iT邦新手 4 級 ‧ 2020-09-02 22:48:35

HELLO 老師,你今天又參戰啦,
你去年參戰我也有回應您,

我是您2018愛x科技生醫電子ai人才班的學生啦~~

你還記得我,真好 !

我要留言

立即登入留言